// 封装一个工具函数输入一个 promiseA 返回一个 promiseB 如果超过 1s 没返回则抛出异常如果正常则输出正确的值

function timeoutPromise(promiseA, timeout = 1000) {
    // 为甚使用Promise.then?因为只输出第一个
    return Promise.race([
        // 原始成功的输入
        promiseA,
        // 超时返回的reject
        new Promise((resolve, reject) => {
            setTimeout(() => {
                reject(new Error("timeout"));
            }, timeout);
        })
    ]);
}

// 定义一个 2s 后返回结果的 Promise 实例
const promiseA = new Promise((resolve, reject) => {
    setTimeout(() => {
        resolve("result");
    }, 2000);
});
// 调用 timeoutPromise 函数，设定 1s 超时时间
timeoutPromise(promiseA, 1000)
    .then((result) => {
        console.log(result); // 不会输出
    })
    .catch((error) => {
        console.log(error.message); // "timeout"
    });
// 调用 timeoutPromise 函数，设定 3s 超时时间
timeoutPromise(promiseA, 3000)
    .then((result) => {
        console.log(result); // "result"
    })
    .catch((error) => {
        console.log(error.message); // 不会输出
    });
